!function() {
    var r = "undefined" == typeof window ? require("./Crypto").Crypto : window.Crypto, t = r.util, e = r.charenc, n = e.UTF8, o = e.Binary, s = [ 1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298 ], i = r.SHA256 = function(r, e) {
        var n = t.wordsToBytes(i._sha256(r));
        return e && e.asBytes ? n : e && e.asString ? o.bytesToString(n) : t.bytesToHex(n);
    };
    i._sha256 = function(r) {
        r.constructor == String && (r = n.stringToBytes(r));
        var e, o, i, a, y, u, c, f, d, g = t.bytesToWords(r), v = 8 * r.length, T = [ 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225 ], h = [];
        g[v >> 5] |= 128 << 24 - v % 32, g[15 + (v + 64 >> 9 << 4)] = v;
        for (var l = 0; l < g.length; l += 16) {
            e = T[0], o = T[1], i = T[2], a = T[3], y = T[4], u = T[5], c = T[6], f = T[7];
            for (var w = 0; w < 64; w++) {
                if (w < 16) h[w] = g[w + l]; else {
                    var b = h[w - 15], p = h[w - 2], B = (b << 25 | b >>> 7) ^ (b << 14 | b >>> 18) ^ b >>> 3, S = (p << 15 | p >>> 17) ^ (p << 13 | p >>> 19) ^ p >>> 10;
                    h[w] = B + (h[w - 7] >>> 0) + S + (h[w - 16] >>> 0);
                }
                var _ = e & o ^ e & i ^ o & i, C = (e << 30 | e >>> 2) ^ (e << 19 | e >>> 13) ^ (e << 10 | e >>> 22);
                d = (f >>> 0) + ((y << 26 | y >>> 6) ^ (y << 21 | y >>> 11) ^ (y << 7 | y >>> 25)) + (y & u ^ ~y & c) + s[w] + (h[w] >>> 0), 
                f = c, c = u, u = y, y = a + d >>> 0, a = i, i = o, o = e, e = d + (C + _) >>> 0;
            }
            T[0] += e, T[1] += o, T[2] += i, T[3] += a, T[4] += y, T[5] += u, T[6] += c, T[7] += f;
        }
        return T;
    }, i._blocksize = 16, i._digestsize = 32;
}();